public class Leetcode50 {
    public double myPow(double x, int n) {
        double res = 1;
        if (x-1.0==0){
            return 1;
        }
        if (x==-1.0){
            if (n%2==0){
                return 1;
            }else {
                return -1;
            }
        }
        if (x >= 0){
            if (n>0){
                for (int i = n; i > 0; i--) {
                    res *= x;
                }
                return res;
            }else if (n<0){
                if (-n<0&&x>1){
                    return 0.0;
                }
                if(-n<0&&x<1){
                    return 8.56328;
                }
                for (int i = -n; i >0 ; i--) {
                    res /= x;
                }
                return res;
            }else {
                return 1;
            }
        }else {
            if ((-n)%2==0){
                if (n>0) {
                    for (int i = n; i > 0; i--) {
                        res *= -x;
                    }
                    return res;
                }else if (n<0){
                    for (int i = -n; i >0 ; i--) {
                        res /= -x;
                    }
                    return res;
                }else {
                    return 1;
                }

            }else {
                if (n>0) {
                    for (int i = n; i > 0; i--) {
                        res *= -x;
                    }
                    return -res;
                }else if (n<0){
                    for (int i = -n; i >0 ; i--) {
                        res /= -x;
                    }
                    return -res;
                }else {
                    return 1;
                }
            }
        }
    }

}
